Creation parameters:
- wxIPV4address
- flags [=wxSOCKET_NONE]
- wxSOCKET_NONE Normal functionality.
- wxSOCKET_NOWAIT Read/write as much data as possible and return immediately.
- wxSOCKET_WAITALL Wait for all required data to be read/written unless an error occurs.
- wxSOCKET_BLOCK Block the GUI (do not yield) while reading/writing data.
In order to receive data through sockets, you first need to create a wxSocketServer object
to wait for new connections. Then, in an event handler, you need to create a new wxSocketServer
object that will handle the connection, and set up an event handler for that socket, as well.
Alternatively, you could call
socket_accept() with
wait = 1, although this will not return
until a connection has been made.
code
ex:
server = create( wxSocketServer, address )
server_id = get_id( server )
set_socket_notify( server, {wxSOCKET_CONNECTION_FLAG, wxSOCKET_LOST_FLAG})
socket_event_handler( server, main_form, server_id )
procedure main_socket_event( atom this, atom event_type, atom id, atom event )
sequence bytes
atom socket
event_type = get_socket_event( event )
if id = server_id and event_type = wxSOCKET_CONNECTION then
connection = socket_accept( server, 0 )
connection_id = get_id( connection )
set_socket_notify( connection, {wxSOCKET_INPUT_FLAG, wxSOCKET_LOST_FLAG})
socket_event_handler( connection_id, main_form, connection_id )
set_event_handler( main_form, connection_id, wxEVT_SOCKET, routine_id("main_socket_event"))
elsif event_type = wxSOCKET_LOST then
delete_instance( socket_from_event( event ) )
elsif event_type = wxSOCKE_INPUT then
bytes = socket_read( socket_from_event( event ) )
end if
end procedure
set_event_handler( main_form, server_id, wxEVT_SOCKET, routine_id("main_socket_event")
endcode
func socket_accept( atom socket, integer wait )
Parent Topics:
Classes
Networking
Category: wxSocketServer
Accepts an incoming connection request, and creates a new wxSocketBase object which
represents the server-side of the connection.
If wait is TRUE and there are no pending connections to be accepted, it will wait for
the next incoming connection to arrive. Warning: This will block the GUI.
If wait is FALSE, it will try to accept a pending connection if there is one, but it
will always return immediately without blocking the GUI. If you want to use Accept in
this way, you can either check for incoming connections with WaitForAccept or catch
wxSOCKET_CONNECTION events, then call Accept once you know that there is an incoming
connection waiting to be accepted.